Block-Based Encoding and Decoding Information Transference System and Method

ABSTRACT

Methods, apparatuses, and systems enabling an information exchange system allowing for the transmission of a message carrier containing at least one message code along with video and television data, as well as subsequent capture and decoding of the message carrier to identify the at least one message code. As discussed herein, implementations of the invention can be used in connection with an electronic commerce and data interchange system featuring a Universal Digital Assistant (UDA) that facilitates financial transactions and data interchange, as well as dissemination, management and exchange of commercial information (e.g., advertising, promotions, sales announcements, and the like) and personal information (e.g., address and other contact information, driver&#39;s license number, and memberships). The invention, in one implementation, provides an end-to-end e-commerce solution that can transform a mobile phone/PDA (Personal Digital Assistant) into a Universal Digital Assistant configured to receive data (e.g., advertising, promotions, and sales announcement information) based on message codes encoded into message carriers disseminated through advertising and content from analog and digital television broadcasts, television receivers, the Internet, wireless signals, radio broadcasts, satellite broadcasts, and print media.

CROSS-REFERENCE TO RELATED APPLICATION

The present application claims the benefit of U.S. ProvisionalApplication Ser. No. 60/413,926 filed Sep. 26, 2002.

FIELD OF THE INVENTION

The present invention relates to data encoding and decoding systems and,in one implementation, to an interactive electronic commerce system thatutilizes code blocks to communicate message codes to users viewingtelevision and other video images.

BACKGROUND OF THE INVENTION

Except for the emergence of the Internet, there have been fewsignificant improvements in the way consumers can quickly and easilyretrieve information for, or promotions pertaining to, products theysee. When a consumer views product advertisements on television or inprint media, they often want further information about the products.Consumers may also desire special promotions or deals for theseproducts. This requires a consumer to first remember which products theywant further information on, and then go and find this information usingmediums such as the Internet or newspapers. For example, when a personsees a product displayed on television and desires further information,he must remember characteristics about the product. At a later time, theperson can enter those characteristics as search terms in a typicalsearch engine. Alternatively, assuming the broadcast advertisement orprogram displays an “800” number, the person may use the number andaccess a telephone operator or call center to obtain more informationand/or order the item. Beyond these methods, however, there are few waysof quickly gathering further information on, or promotions for, productsbased upon an observation of a television or print advertisement. Inlight of the foregoing, it can be seen that a need exists foralternative methods of quickly obtaining information about suchproducts.

SUMMARY OF THE INVENTION

The invention provides methods, apparatuses, and systems enabling aninformation exchange system allowing for the transmission of a messagecarrier containing at least one message code along with video andtelevision data, as well as subsequent capture and decoding of themessage carrier to identify the at least one message code. As discussedherein, implementations of the invention can be used in connection withan electronic commerce and data interchange system featuring a UniversalDigital Assistant (UDA) that facilitates financial transactions and datainterchange, as well as dissemination, management and exchange ofcommercial information (e.g., advertising, promotions, salesannouncements, and the like) and personal information (e.g., address andother contact information, driver's license number, and memberships).The invention, in one implementation, provides an end-to-end e-commercesolution that can transform a mobile phone/PDA (Personal DigitalAssistant) into a Universal Digital Assistant configured to receive data(e.g., advertising, promotions, and sales announcement information)based on message codes encoded into message carriers disseminatedthrough advertising and content from analog and digital televisionbroadcasts, television receivers, the Internet, wireless signals, radiobroadcasts, satellite broadcasts, and print media.

DESCRIPTION OF THE DRAWINGS

FIG. 1 sets forth a computer network environment including aninteractive electronic commerce system.

FIG. 2 is a block diagram illustrating the functionality associated witha universal digital assistant.

FIG. 3A illustrates a screen display including one implementation of acheckerboard message carrier.

FIG. 3B illustrates a screen display including another implementation ofa checkerboard message carrier.

FIG. 3C illustrates a screen display including a vertical strip messagecarrier.

FIG. 4A illustrates two modules that are used for transmitting data in amessage carrier.

FIG. 4B illustrates six modules used in forming a message carrier.

FIG. 5 illustrates the location and examination of vertical scan linesin captured images to locate a message carrier.

FIG. 6 illustrates vertical scan lines being used to locate the centerof a message carrier.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 illustrates an electronic commerce system 10 utilizing a dataencoding and decoding scheme according to one implementation of theinvention. As FIG. 1 illustrates, electronic commerce system 10 includesone or more universal digital assistants (UDA) 90 that can receive datafrom a media source, for example, a display device 95 having a displayscreen 96. Electronic commerce system 10 also includes a UDA applicationsite 50 that interacts with UDA 90 to facilitate financial transactionsand carry out other processes as described herein. UDA 90 interacts withUDA application site 50 through a telecommunications network 20 and acomputer network 40. Electronic commerce system 10 can also include amerchant system 60, an advertising system 62, at least one networkaccess device such as client computer 64, at least one transactionprocessing network 70 (e.g., an Automated Clearing House (ACH) network,credit card network, etc.), and one or more financial institutions 72.

Telecommunications network 20 can be a wireless telephone network (asshown in FIG. 1), a land-based telephone network, and/or a combinationthereof. Telecommunications network 20 can be any suitable digital oranalog wireless network, such as a Time Division Multiple Access (TDMA)network, a Global System for Mobile communication (GSM) network, or aCode-Division Multiple Access (CDMA) network.

Telecommunications network 20 enables transmission of voice and otherdata to mobile wireless devices, such as UDA 90. Telecommunicationsnetwork 20 therefore enables communication between UDA 90 and othersystems operably connected thereto. In one implementation,telecommunications network 20 includes a Wireless Application Protocol(WAP) gateway 22, which provides a set of communication protocolsenabling wireless devices, such as UDA 90, to access the Internet orsimilar computer network 40. WAP gateway 22 is operative to establish aconnection (e.g., a Wireless Session Protocol (WSP) connection) with UDA90, to receive requests designating an application server or otherresource on computer network 40 from UDA 90, to translate the requestinto a hypertext transfer protocol (HTTP) or other suitable request tothe appropriate application server, to receive a response from theapplication server, and to translate and transmit the response to UDA90. Alternatively, the transmission of data between UDA 90 and UDAapplication site 50 can occur over a Short Message Service (SMS)gateway. In one implementation, the client functionality of UDA 90 isoperative to configure SMS messages into a predefined format recognizedby UDA application site 50.

Computer network 40 can be any suitable computer network, including butnot limited to an Internet Protocol (IP) network, such as the Internet.Computer network 40 can be an open, wide-area network (WAN), anelectronic network, an optical network, a wireless network, and/or anycombination thereof. Computer network 40 can be a packet-basedcommunications environment, employing Transmission ControlProtocol/Internet Protocol (TCP/IP) standards and having a plurality ofinterconnected digital packet transmission stations operative to routedata between TCP/IP end systems. The invention, however, hasapplications in computer network environments employing any suitabletransport layer and network layer protocols.

UDA 90, in one implementation, is a wireless device that providescomputing and information storage and retrieval capabilities forapplications installed therein. UDA 90 is operative to communicate withremote devices over telecommunications network 20. In oneimplementation, UDA 90 includes hardware and/or software operative toacquire message codes using one or more code capture technologies andthen communicate such codes to UDA application site 50. UDA applicationsite 50 is operative to return at least one promotional message to UDA90 for display or other action to the user. The functionality associatedwith UDA 90 can be integrated into a variety of wireless deviceplatforms, such as cell phones, wireless personal digital assistants(PDA), universal remote controllers, television remote controllers,pagers, wearable computing devices, and the like. In one implementation,the functionality of UDA 90 is incorporated into a television or set-toptelevision receiver remote control unit.

UDA 90 can further include short-range wireless functionality forwireless communication of data with a second device, such as apoint-of-sale (POS) terminal or any other suitably configured device.This functionality can be implemented using, for example, infraredsignals (e.g., IrDA), radio signals (e.g., 802.11 technologies (Wi-Fi)or Bluetooth), short burst Ethernet, wireless network signals (e.g.,GSM, TDMA, or CDMA), and message services such as SMS and MultimediaMessage Service (MMS). Such functionality allows UDA 90, for example, totransmit credit card account information and other information directlyto a POS terminal equipped with complementary wireless communicationfunctionality.

UDA 90, in one implementation, is also operative to receive data fromtelecommunications network 20 (or computer network 40) and transmit datato telecommunications network 20 (or computer network 40) for routing toappropriate devices. UDA 90, in one implementation, is anInternet-enabled device capable of receiving data from remote serversand displaying data on a user interface screen. In one implementation,UDA 90 is a WAP-enabled device, such as a WAP mobile phone, thatincludes a WAP client (e.g., a Wireless Application Environment (WAE)user agent, such as a WAP browser, and a Wireless Telephony Application(WTA) user agent). In another implementation, UDA 90 can be a wirelessPDA including HTML compliant or HTML-supported browser functionality,such as Pocket PC including Pocket Internet Explorer® (PIE), which is amobile version of Microsoft's Internet Explorer®, includinglimitedjavascript support and the ability to display HTML and MacromediaFlash files (assuming the Flash plug-in is installed).

FIG. 2 is a block diagram illustrating the functionality of UDA 90according to one implementation of the invention. As FIG. 2 illustrates,UDA 90 includes an image capture device 102, a display device 104, anantenna 106, a client application control logic 108, and a wirelesscommunication interface 110.

Client application control logic 108 executes the client-sidefunctionality described herein, such as processing images to acquiremessage codes and transmitting the message codes through wirelesscommunication interface 110 to UDA application site 50. The imageprocessing functionality of client application control logic 108 canprocess a digital image by reading intensity values of the pixels thatform the image, and then analyzing those intensity values to identifypatterns or other behavior. Generally, the pixels are read by scanningvertical columns of pixels in the image, known as vertical scan lines.The pixel values can also be read by scanning horizontal rows of pixels,known as horizontal scan lines. Wireless communication interface 110 isoperative to establish and maintain a connection to telecommunicationsnetwork 20 using antenna 106 to enable communication of data between UDA90 and remote devices.

Image capture device 102 is operative to capture images of messagecarriers and message codes transmitted in visual media. Depending on themessage encoding technology employed, for example, image capture device102 can comprise a photo detector and associated circuitry as disclosedin U.S. Pat. No. 5,594,493 or U.S. Pat. No. 3,848,082. Alternatively,image capture device 102 can comprise a digital camera allowing for thecapture of images containing message codes. Display device 104 is aliquid-crystal or other display device. In one implementation, displaydevice is a touch-sensitive liquid crystal display device.

As one skilled in the art will recognize, the functionality describedabove can be integrated into existing wireless device platforms. Forexample, client application control logic 108 can be implemented into awireless phone with an embedded runtime environment such as Java. Theruntime environment can execute a script or byte code program to performthe functions described herein and use the wireless communication systemof the phone to transmit and receive data from remote devices.

UDA application site 50 is connected to computer network 40 tocommunicate with end systems and other nodes operably connected thereto,such as client computer 64. UDA application site 50 interacts with UDA90 through computer network 40, WAP gateway 22, and wirelesstelecommunications network 20 to facilitate data interchanges, financialtransactions, and other operations as described herein. UDA applicationsite 50 can be configured to support a variety of wireless devices,including IMode phones, and mobile wireless devices including BinaryRuntime Environment for Wireless (BREW) or Java 2 Platform Micro Edition(J2ME) technologies. In one implementation, UDA application site 50includes at least one application server 52, a user account database 54,and a promotional message database 56.

Application server 52 includes functionality implementing the processflows described herein. User account database 54 stores informationrelated to at least one user account. Such user account informationincludes a user account identification, name, address, e-mail address,as well as system settings, preferences, user profile information (e.g.,psychographic information, demographic information, and behavioralinformation) obtained by monitoring a user's use of the system or bydirect interaction with the user through questionnaires and the like.User account database 54 can also store financial account informationfor at least one user to facilitate financial transactions using UDA 90.

Promotional message database 56 stores promotional messages, such asadvertisements, coupons, and other commercial offers, in associationwith one or more message codes. In one implementation, advertisingsystem 62 transmits promotional messages in electronic form topromotional message database 56 for storage in association with messagecodes. In another implementation, application server 52 can receive amessage code from UDA 90 and return one or more promotional messagesassociated with that message code, as discussed herein.

UDA 90 operates in connection with UDA application site 50 to enableusers to receive and review advertising, promotional, informational andother messages, as well as conduct financial transactions and otheroperations. According to an implementation of the invention, UDA 90acquires message codes (e.g., from television advertisements or printadvertisements) and transmits them to UDA application site 50, whichpushes an advertising or promotional message back to UDA 90 in return.Advertising and promotional messages can take a variety of forms,including but not limited to electronic coupons, product pricing,descriptive data, loyalty offerings, and other similar items. Accordingto one implementation, a user can elect to save the advertising orpromotional message for later use or inspection by storing it locally onUDA 90 or remotely on UDA application site 50 in association with his orher user account.

To facilitate initiation and maintenance of user accounts, users mayaccess UDA application site 50 through network access devices overcomputer network 40 to manage their respective user accounts throughnetwork access devices connected to computer network 40. In oneimplementation, the network access device is a browser executed on aclient computer 64, or another browser executed on a network computer(not shown). In one implementation, page-based interfaces for accessingUDA application site 50 are transmitted to client computer 64 having abrowser and a connection to computer network 40.

Client computer 64 can include any computer, special-purpose computingdevice, or any other suitable device having the required functionality.In one implementation, client computer 64 includes at least oneprocessor, a data storage system (including volatile and non-volatilememory), at least one input device (e.g., a keyboard), and at least oneoutput device (e.g., a display). In one implementation, client computer64 is connected to computer network 40 through a modem connection (e.g.,dial-up, DSL, or cable) or through a network line. Such connections canbe wireless as well. In addition, although implementations of the systemare described as working in conjunction with a browser, any suitabledevice, application, or client software for receiving, displaying, andtransmitting data over a computer network can be used. In oneimplementation, the browser implemented on client computer 64 supportsthe SSL (“Secure Sockets Layer”) protocol, the S-HTTP or HTTPS (“SecureHTTP”) protocol, or any other similar protocol for transmittingconfidential or private information over an open computer network. Usersare individuals or other legal entities having the capacity to possessfinancial accounts, such as corporations, partnerships, non-profitorganizations, trusts, and the like.

Client computer 64 is a TCP/IP end system operably connected to computernetwork 40 via any suitable means, such as through an Internet ServicesProvider (ISP) and the like. Client computer 64 can be any suitableinternet-enabled computing device, including but not limited to adesktop computer, a laptop computer, a cell phone, a personal digitalassistant (PDA), or UDA 90 having wireless or wired access to computernetwork 40. The wireless or wired access can be through a router, awireless router executing the 802.11 wireless protocol, Mobitex,DataTAC, General Packet Radio Service (GPRS), or any otherpacket-switched wireless network. In one implementation, client computer64 includes internet browsing software for receiving, displaying, andtransmitting data over a computer network.

Payment transaction processing network 70 supports a variety of non-cashpayment mechanisms, including but not limited to purchases made bycredit card, debit card, and Automated Clearing House (ACH)transactions. In one implementation, payment transaction processingnetwork 70 can be a credit card or debit card transaction processingnetwork, such as Visa®, MasterCard®, Discover®, or American Express®. Inone implementation, payment transaction processing network 70 enablesusers, using UDA 90, to provide non-cash methods of payment to amerchant system 60 or at a POS terminal.

Financial institution 72 is where users maintain financial accounts,such as checking accounts, savings accounts, money market accounts,credit and/or debit card accounts, and other financial accounts. A usercan have one or more bank accounts at each of one or more financialinstitutions. For example, a user can have a checking account and acredit and debit card account at one financial institution and stillhave a credit account with a different financial institution.

As discussed above, UDA 90 is operative to detect and acquire messagecodes using one or more code capture technologies. For example, UDA 90can be configured to acquire message codes from broadcast media, printmedia, or wireless transmissions. In its most basic form, message codescan be acquired manually by a user inputting a message code directlyinto UDA 90 using a user interface such as a touch sensitive screen, anumeric key pad, or a voice activated and voice-recognition-based userinterface.

In one implementation, UDA 90 is operative to acquire message codesembedded or otherwise transmitted in connection with a televisionbroadcast signal and displayed on a display device 95, such as atelevision or computer monitor. For example, UDA 90 can include a codecapture technology whereby a user can aim UDA 90 at display device 95and capture an image being shown on screen 96. The captured image or aportion thereof is then processed to locate and identify a message codethat is then acquired. For example, UDA 90 can use image capture device102 to capture an image and then use the image processing functionalityof client application control logic 108 to locate and acquire a messagecode in the captured image. In one implementation of the invention, UDA90 can emit a beam of light (e.g., a Class II laser pointer) that canassist a user to aim the image capture device of UDA 90 at screen 96.This is useful in situations where the user cannot see what the imagecapture device is pointed at. In another implementation, the viewthrough the image capture device can be shown to the user on displayscreen 104 of UDA 90, thereby eliminating the need for a laser pointer.

As shown in FIG. 3A, in one implementation of the invention, the messagecodes can be presented on a television screen 96 within a messagecarrier 200 resembling an overt checkerboard-like design that can becaptured using image capture device 102. The checkerboard messagecarrier 200 can be formed using a series of two-dimensional blocks,where two or more colors are used for the blocks. For instance, messagecarrier 200 of FIG. 3A uses black and white blocks. The blocks can beused to represent bits that form the message code. In such asimplementation, image capture device 102 of UDA 90 can capture an imageof the checkerboard message carrier, and the image processingfunctionality of client application control logic 108 can scan the imageand read the pattern of blocks, or the transitions between blocks, toacquire the message code.

In another implementation, message codes can be displayed on displaydevice 95 as plain text codes at a predetermined location on screen 96.In such an implementation, the image processing functionality of clientapplication control logic 108 is operative to locate the message codeand use text recognition functionality to acquire the message code. Inanother implementation, message codes are displayed as graphical symbolsthat UDA 90 processes to acquire the message codes.

In another implementation, the message code can be an arbitraryalphanumeric string that is associated with an advertising orpromotional message. UDA 90 can capture an image of the string andtranslate the string to acquire the message code. In anotherimplementation, the incoming message code can be embedded in the audiotrack of the television signal. The embedded message code can besubliminal (not perceptible to the user) or overt.

In yet another implementation, UDA 90 operates in connection with atelevision receiver to acquire message codes. For example, thetelevision receiver can be a satellite or cable receiver that isoperative to receive a television broadcast and display the broadcast ondisplay device 95. The television receiver can also be configured toreceive message codes that are transmitted to the receiver using anysuitable means. For example, the message codes can be transmitted to thereceiver in the satellite or cable broadcast, through telecommunicationsnetwork 20, or through computer network 40. Other methods oftransmitting message codes to the receiver are possible as well. UDA 90can then receive the message codes from the television receiver over awireless communication path between the television receiver and UDA 90.This wireless communication path can be implemented using infrared(IrDA) signals, Bluetooth signals, 802.11 signals, or any other shortrange wireless system. This implementation bypasses the need foron-screen message carrier 200.

In one implementation, when a television broadcast displays an offer ofinterest to the user, user action triggers UDA 90 to contact thetelevision receiver. The television receiver responds by transmittingthe message code, and possibly details of the offer, to UDA 90. UDA 90can then transmit the message code back to UDA application site 50.Alternatively, when the television receiver is contacted by UDA 90, thetelevision receiver can pass the query directly to UDA application site50, eliminating the need for a communication path between the UDA 90 andUDA application site 50.

Short range wireless communications can be used to transmit messagecodes to UDA 90 in other contexts as well. For example, alternatedevices within the immediate vicinity of UDA 90 can transmit messagecodes using infrared, Bluetooth, 802.11b, Wi-Fi, or short burst Ethernettechnologies. In one implementation, UDA 90 can receive message codesfrom a transponder located at a variety of physical locations, such as apoint of sale location, a movie theater, a mall kiosk, or a restaurant.This enables a user to receive promotional messages that are immediatelyrelevant to business establishments that the user is patronizing or thatare nearby. Application server 52 can also identify the relevantadvertisement using information delivered to it by equipment monitoringthe video stream and other data provided by the advertisers.

In one implementation, UDA 90 is operative to capture message codes fromprint media and the like. UDA 90 can include image processingfunctionality in client application control logic 108 that is configuredto acquire a message code from a captured image of a printadvertisement. In another implementation, UDA 90 can include bar codescanning functionality operative to read a bar code expressing a messagecode in the print media.

The message code can contain any type of data and can identify any of anumber of items. For example, in one implementation the message code canidentify the television station to which display device 95 is tuned(e.g., station call letters or a station identifier). In such animplementation, an advertisement or promotional message can then beidentified using the station identifier and the time the stationidentifier was captured. In one implementation, UDA application site 50can scan this information against a station log to resolve theadvertising or other content the user was watching. UDA application site50 can then return an advertising or promotional message associated withthe broadcast advertising or other content.

As discussed herein, after a message code is acquired, UDA 90 cantransmit the message code to UDA application site 50 which resolves themessage code and pushes an electronic commerce and/or data message backto UDA 90. In one implementation, application server 52 receives arequest including the message code and accesses promotional messagedatabase 56 to retrieve a promotional message associated with themessage code. If a promotional message is located, application server 52pushes the promotional message to UDA 90. Application server 52 can alsocarry out other functions such as tracking the user's interests andbehavior. For example, application server 52 can generate a log, storedin association with the user's account, that records the message codesreceived from the user and the promotional messages sent in response. Inone implementation, application server 52 can use the log to tracksystem usage by the user to enable a fee-based service for advertisers.For example, an advertiser can be charged a fee for each promotionalmessage pushed to a user's UDA 90. In addition, UDA application site 50,in one implementation, can be configured to transmit usage or activityreports to advertising system 62 detailing the activity associated withpromotional messages and/or user purchasing behavior.

A user can perform a variety of actions with respect to the promotionalmessage. The user can view the promotional message and simply discardit. Alternatively, the user can save the promotional message by storingit locally on UDA 90 or remotely in the user's account maintained at UDAapplication site 50. For example, the promotional message can be anelectronic coupon that the user stores for later redemption at a POSterminal using UDA 90. Alternately, the electronic coupon can be used byaccessing merchant system 50 using client computer 64.

UDA 90 can provide the user with management or organizationalfunctionality in connection with the stored electronic coupons. In oneimplementation, navigation through stored electronic coupons can befacilitated through standard PDA user interface capabilities. Forexample, UDA 90 can enable a user to scan a list of categories andselect one category to view. The user can then scan the storedelectronic coupons in the selected category. UDA 90 can also enable auser to delete an electronic coupon or mark it for duplication in aspecial category, such as a shopping list category. UDA 90 can allowusers to retrieve a list of coupons based on expiration date, so that auser can see which of her coupons is going to be invalid soon (e.g., alist of coupons expiring in two weeks can be generated). UDA 90 can alsouse its shorts range wireless capabilities to provide easy access to aUniversal Product Codes (UPC) for stored coupons at a POS terminal. Inone implementation, once a coupon has been redeemed, it is automaticallymarked for deletion or it is automatically deleted. Electronic couponsthat have expired can also be marked for deletion automatically. In oneimplementation, UDA 90 requires the user to explicitly invoke the batchdeletion. In another implementation, UDA 90 automatically performs suchbatch deletions.

In one implementation, UDA 90 can be configured to facilitate financialtransactions. UDA 90 can securely store a user's financial accountinformation, such as credit card account numbers, debit card accountnumbers, checking account numbers, and other financial accountinformation. In one implementation, this financial account informationcan be stored securely on UDA 90 to keep this information protected fromothers that may take possession of UDA 90 without the user's consent.Using a wireless transmission protocol, such as IrDA or Bluetooth, UDA90 can transmit financial account information directly to a transactionprocessing device at a POS terminal, in addition to electronic couponsthat can be transmitted as well. The transaction processing device canauthorize or otherwise process the transaction in a conventional manner.In one implementation, UDA application site 50 can play a role in thistype of purchase transaction. For example, UDA 90 can transmit datarelated to the purchase transaction to UDA application site 50 where itis logged in a financial transaction history maintained in the user'saccount. In addition, UDA application site 50 can be invoked to transmita previously stored electronic coupon to UDA 90 to enable the user toredeem it at the POS terminal.

In another implementation, the user's financial account information canbe stored and maintained at UDA application site 50. In oneimplementation, a purchase transaction at a POS terminal can beconducted by the user activating UDA 90 to request user accountinformation from UDA application site 50. After the user accountinformation is received, UDA 90 transmits the account information to thePOS terminal as described above. Furthermore, UDA 90, as a WAP-enableddevice for example, can be used to conduct transactions with merchantsystem 50. For example, UDA 90 can be configured to include electronicwallet functionality (operating independently or in connection with UDAapplication site 50) operative to facilitate on-line financialtransactions with merchant system 50 over computer network 40.

As stated above, FIG. 3A illustrates one implementation of messagecarrier 200 on a television screen 96. The normal television imageoccupies most of screen 96. Message carrier 200 is used to present themessage code and provides a target for image capture device 102 of UDA90 to locate in order to acquire the message code. In the implementationof FIG. 3A, message carrier 200 uses a block-based encoding schemeresembling an overt checkerboard-like design, and the message code canbe presented using a series of blocks within that checkerboard. Two ormore colors can be used for the blocks, and the color state of theblocks achieves a binary encoding scheme. For example, black blocks canrepresent one bit value (e.g., a value of “0”) and the white blocks canrepresent another bit value (e.g., a value of “1”). Alternately,transitions between blocks can be used to represent data. For example, atransition between from white to black and black to white may representa “1” bit, while no transition (i.e., two adjacent blocks of the samecolor) may represent a “0” bit.

One or more features of message carrier 200 can be preset or constant toallow client application control logic 108 of UDA 90 to locate messagecarrier 200 in a captured image and then locate the message code withinthe message carrier. When the image processing functionality of clientapplication control logic 108 reads and analyzes the intensity values ofpixels in the captured image (e.g., using vertical scan lines orhorizontal scan lines), these preset or constant features can bedetected and message carrier 200 can then be identified. From there, themessage code can then be identified and acquired.

In another implementation, the image processing functionality can resideon a remote server and the captured image can be transmitted to thisremote server for processing. Such an implementation moves the burden ofprocessing the digital image to a remote server that will typically havemuch greater processing power than UDA 90. The time required to processthe captured image will then be reduced. UDA 90 can transmit thecaptured image to the remote server using any of the wirelesstechnologies described herein, for instance, the captured image can betransmitted in an MMS message. If UDA application site 50 is used asthis remote server, then a promotional message can be pushed to the userafter processing of the image and acquisition of the message code hasoccurred. Otherwise, the remote server can simply transmit the acquiredmessage code back to UDA 90 or directly to UDA application site 50.

In one implementation, message carrier 200 can have one or more borders204 that remain constant as the message code changes. For example, theone or more borders 204 can be one continuous color such as black. Thiscan aid the image processing functionality of client application controllogic 108 in locating message carrier 200. In one implementation, athree-sided border 204 can be used around message carrier 200 to aid inits identification, where three-sided border 204 is one continuouscolor. As shown in FIG. 3A, message carrier 200 includes left, top, andbottom border regions 204 that are colored black or any other suitablecolor. Accordingly, the checkerboard region is bordered on three sidesby a black color, and by the television image on the fourth side. Theimage processing functionality of client application control logic 108can use three-sided border 204 to locate message carrier 200, and canthen filter out three-side border 204 to extract the message codeitself. As shown in FIG. 3B, in another implementation, three-sidedborder 204 can use two or more colors that maintain a constant patternas the message code changes. The constant pattern can include a set ofblack-to-white or white-to-black transitions that can be detected by theimage processing functionality of client application control logic 108when it is trying to locate message carrier 200.

In one implementation, another portion of message carrier 200 can definea set of black-to-white or white-to-black transitions. For example, fourblocks (not shown) can be located within three-sided border 204, andthey can be oriented such that the top two squares are white and thebottom two squares are black. Image capture device 102 can then learnthe white-to-black transition for message carrier 200 while scanningdown the image. The white-to-black transition squares can be positionedso that the image processing functionality of client application controllogic 108 can pick out the transition squares from the message codeitself. In another implementation, the white-to-black transition squaresused for defining transitions for can be located on border 204, such asin FIG. 3B.

Other implementations of message carrier 200 are possible. For example,in an implementation shown in FIG. 3C, message carrier 200 can be avertical strip that runs along an edge of screen 96. As FIG. 3Cillustrates, message carrier 200 can be oriented along the left side ofscreen 96; however, message carrier 200 can extend along any edge ofscreen 96, including the top, right, or bottom edges. Message carrier200 can be formed using a small number of columns, typically rangingfrom one to four columns. Message carrier 200 shown in FIG. 3C usesthree columns.

To allow UDA 90 to locate message carrier 200 when it is formed as avertical strip, a three-sided border 204 similar to message carrier 200can be used. Alternately, message carrier 200 can use a preset orconstant pattern of blocks located at a predetermined position along thevertical strip to allow image capture device 102 to locate it. In oneimplementation, a set of blocks that are a single color can bepositioned in the middle of the vertical strip at all times as themessage code changes. The dimensions of the set of blocks can depend onthe number of columns used in the vertical strip message carrier. As oneof skill in the art will recognize, having the set of blocks in themiddle of the vertical strip message carrier 200 will reduce the amountof processing required by image capture device 102 of UDA 90 whenorientation and correlation variables are taken into consideration. Inanother implementation, vertical strip message carrier 200 can includeblack-to-white transitions at predetermined positions along the verticalstrip for detection by the image processing functionality of clientapplication control logic 108.

In one implementation, notwithstanding any borders 204 used foridentification by the image processing functionality of clientapplication control logic 108, message carrier 200 can be constructedusing a plurality of modules 300 as shown in FIG. 4A. Each module 300provides two data bits of the message code. FIG. 4A illustrates twoadjacent modules 300 that combine to provide four data bits of themessage code. The blocks used to present data are labeled with a “D” inFIG. 4A.

In the implementation shown in FIG. 4A, each module 300 can be twoblocks wide by three blocks high. The blocks need not be perfectsquares. In FIG. 4A the top two blocks 302 are white while the bottomtwo blocks 304 are black. In other implementations, this order can bereversed or the blocks can use another set of colors. The middle twoblocks are data blocks 306 that express two bits of data. As describedabove, data blocks 306 that are black can represent one bit value (e.g.,a value of “0”) and data blocks 306 that are white can represent anotherbit value (e.g., a value of “1”). This configuration can be reversed orother colors can be used to represent bits. Although black and white arepreferred, other suitable colors can be used in the block-based encodingscheme.

Adjacent modules 300 provide a constant black-to-white transition 308that is repeated at regular intervals. The black-to-white transition 308occurs between the black bottom blocks 304 of the first module 300 andthe white top blocks 302 of the adjacent module 300. The number of timesa black-to-white transition occurs will depend on the number of modules300 used to form the message code. In FIG. 4A, only two modules 300 areused so there is only one black-to-white transition 308. In FIG. 4B, sixmodules 300 form the message code yielding five black-to-whitetransitions 308.

The benefit of having black-to-white transitions 308 occur at regularintervals is that when a vertical column of pixels in the image isscanned and analyzed, these transitions 308 between dark-colored regionsand light-colored regions can be readily identified by the imageprocessing functionality of client application control logic 108. Thisprovides another method by which the image processing functionality ofclient application control logic 108 can locate message carrier 200. Andbecause the black-to-white transitions 308 are two blocks wide, thecaptured image of message carrier 200 does not have to be perfectly orsubstantially aligned for a vertical scan line of pixels to still pickup all of the transitions 308. A substantial amount of play or range isprovided by having the black-to-white transitions 308 be two blockswide. So even if the captured image is not properly aligned by the user,UDA 90 still has a good probability of identifying message carrier 200.

The number of bits required to express a given message code determinesthe number of data blocks that message carrier 200 must include. Forinstance, as shown in FIG. 4B, if twelve bits are needed to define orexpress a particular message code, then message carrier 200 must providetwelve data blocks 306. If modules 300 are being used to provide messagecarrier 200, then six modules 300 are required. In FIG. 4B, the twelvedata positions are numbered from left to right and from top to bottomstarting at D0. The data position numbers, in one implementation,correlate exactly to bit positions in a binary number. D0 and D1 make upthe first row following this plan. The second row consists of D2 and D3.The pattern continues with D4 thru D11, and can continue beyond as moremodules 300 are added. In other implementations, the number of datablocks 306 per module 300 can vary by increasing the number of columnsused in message carrier 200. For example, using four columns in messagecarrier 200 allows each module 300 to have three columns (assuming onecolumn is needed for border 204), and accordingly there are three datablocks 306 per module. Then if twelve data bits are required for themessage code, only four modules 300 are needed.

In one implementation, UDA 90 executes a process to decode the messagecode that includes capturing an image of the display screen includingthe message carrier 200, analyzing vertical scan lines through thecaptured image to identify scan lines that intersect message carrier200, locating and aligning an edge of message carrier 200, optionallyvalidating one or more features surrounding the transitions, and readingthe data bits in the message code.

As discussed above, UDA 90 includes image capture device 102 to capturea digital image of display screen 96 containing message carrier 200. Theuser aims image capture device 102 at a television that is displayingmessage carrier 200, then the user triggers the capture functionality tocapture a digital image. The image can be pre-processed to indicatewhich pixels are white, which pixels are black, and which pixels areneither (i.e., a middle tone), thus reducing each pixel to a two-bitvalue (e.g., 11 for a white pixel, 10 for a black pixel, and 00 for amiddle tone pixel). The middle tone should generally represent much ofthe television image and any surrounding items in the camera image.

In one implementation, the image processing functionality of clientapplication control logic 108 locates message carrier 200 usingblack-to-white transitions that are located within border 204 or inmodules 300. For example, if message carrier 200 is a checkerboarddesign, then the black-to-white transitions 308 can be in border 204.If, however, message carrier 200 is a vertical-stripe design formedusing modules 300, then the black-to-white transitions 308 can be formedbetween modules 300. After the digital image is captured, and optionallypre-processed, the image processing functionality operates to find avertical scan line through the digital image that has crossed all of theblack-to-white transitions 308 in message carrier 200. FIG. 5illustrates the concept of finding a vertical scan line that has passedthrough the black-to-white transitions 308 of message carrier 200. InFIG. 5, vertical scan line 400 has passed through all of theblack-to-white transitions 308 of a message carrier 200 formed usingmodules 300, while vertical scan lines 402 miss all of the transitions.As shown in FIG. 5, the vertical scan lines do not have to be perfectlyvertical. The vertical scan lines can be tilted to improve the chancesof finding message carrier 200 in the event that message carrier 200 isnot aligned correctly in the captured digital image.

Starting at the top left of the captured image, the image processingfunctionality analyzes each vertical scan line (i.e., each column ofpixels) for a desired pattern. In one implementation, the desiredpattern is the correct number of black-to-white transitions 308, spacedat regular intervals, with only a negligible quantity of middle tonepixels between the top and bottom transitions 308. If one scan line doesnot contain the desired pattern, the image processing functionalitymoves to the next scan line, which is typically a few pixels to theright, and repeats the process.

In another implementation, the image processing functionality uses apure brute force technique of trying every option for vertical scanlines, using substantially vertical scan lines as well as a range oftilted scans. In another implementation, when the image processingfunctionality locates some but less than all of the transitions 308 in asingle scan, the partial success can be used as a clue that the correctdata is near, and some effort to attempt various tilts at or near thispoint can be used to speed the identification process.

For example, in one such implementation, the image processingfunctionality analyzes successive vertical scan lines of pixels untilthe transition pattern, or at least part of the transition pattern, islocated. An example of locating part of the transition pattern can meanto locate a vertical scan line crossing some but not all of thetransitions 308 where the transitions 308 are spaced at regularintervals with no significant middle tones interspersed betweentransitions 308. This situation can be caused by the vertical scan linepassing somewhat diagonally across message carrier 200. Next, the imageprocessing functionality records the position (e.g., row and column) ofthe first detected transition 308 and the last detected transition 308in the vertical scan line. The transitions should be detected over arange of successive vertical scan lines, since it will take severalvertical scan lines to cover message carrier 200.

In another implementation, the image processing functionality analyzesvertical scan lines to find a solid border 204. In this implementation,the image processing functionality is looking for a large range ofpixels that are all the same color.

In an implementation, border 204 can be made wider or taller than theblocks that form the message code. Using an over-sized border improvesthe likelihood of a vertical scan line passing through border 204 in itsentirety when the image processing functionality is trying to locatemessage carrier 200. Since the captured image may not be properlyaligned, depending on how the user was holding the image capture device102 when the image was captured, the vertical scan lines may be at anangle relative to message carrier 200 and border 204. The use of anover-sized border 204 increases the range of allowable angles for thevertical scan lines relative to border 204 where a vertical scan linecan still pass through an entire border 204.

Turning to FIG. 6, for the image processing functionality to correctlyorient the vertical scan lines relative to message carrier 200, it mustfirst locate the center 600 of message carrier 200. For message carriersusing transitions 308, a plurality of vertical scan lines containingtransitions 308 are taken and analyzed to determine the position ofcenter 600. A range of adjacent vertical scan lines 602 are identifiedas containing all of the transitions 308 with no substantial middletones interspersed, while vertical scan lines 602 bordering theseadjacent scan lines 602 on the left and right are identified ascontaining fewer of the transitions 308. The bordering vertical scanlines 602 therefore do not pass through the entirety of message carrier200. The image processing functionality can then approximate the cornersof message carrier 200 by locating the highest detected transition point606, the lowest detected transition point 608, the left-most detectedtransition point 610, and the right-most detected transition point 612.

With the corners approximated, the image processing functionalityidentifies the row value for center 600 of message carrier 200 bycalculating the row value halfway between the row values for the highestand lowest detected transition points 606 and 608. This can be donesimply by averaging the row values of highest transition point 606 andlowest transition point 608. Similarly, the column value of center 600can be calculated using the column values for left-most transition point610 and right-most transition point 612. Once these row and columnvalues have been calculated, the location of center 600 is substantiallyknown. Please note that the center 600 can be slightly offset becausethe true corners of message carrier 200 are not used.

When detecting the corners of message carrier 200, in one implementationonly the adjacent vertical scan lines 602 containing all of thetransitions 308 are used. In other implementations, the borderingvertical scan lines 602 can be used in identifying corners only if theycontain a predetermined minimum number of the transitions 308. Thisrestriction reduces the possibility that a vertical scan line containinga false transition is used erroneously.

If the column value of highest detected transition point 606 is to theright of the column value of calculated center 600, and the column valueof lowest detected transition point 608 is to the left of the columnvalue of calculated center 600, then the image processing functionalitycan tilt the vertical scan lines 602 counterclockwise to align them withmessage carrier 200. If the opposite is true (i.e., highest detectedtransition point 606 is to the left of center 600 and lowest detectedtransition point 608 is to the right of center 600), the imageprocessing functionality can tilt the vertical scan lines clockwise. Thetilted vertical scan lines can rescan message carrier 200 to determinewhether they are properly aligned such that all of the vertical scanlines intersecting message carrier 200 now detect all of the transitions308 and there is not a single highest detected transition point 606 or asingle lowest detected transition point 608. If this is not the case andthere are still single highest and lowest transition points, the tiltingprocess can be repeated.

If there is no single highest detected transition point 606 or lowestdetected transition point 608, and a number vertical scan lines have thesame highest and lowest detected transitions, then message carrier 200is properly aligned. This means that there are no bordering verticalscan lines 602 that contain less than all of the transitions 308. Sincemessage carrier 200 is properly aligned, a vertical scan line willgenerally have all of the transitions or none. If the captured imagecannot be scanned to yield the required transitions or data, the imageprocessing functionality recommends that another digital image becaptured. Otherwise, adjustments can be made to the pre-processingalgorithm and the process can be repeated.

Once the vertical scan lines are aligned with message carrier 200, theleft edge of modules 300 can be located to provide for more accuratereading of data blocks 306 that form the message code. In oneimplementation, the image processing functionality finds white blocks302 and then scans to the left of the white blocks 302 to locate blackborder 204. For example, the image processing functionality can analyzethe vertical scan lines to locate the position of white blocks 302adjacent to the highest detected transition 308. The image processingfunctionality locates the middle of the white blocks 302 by firstassuming that the width of white blocks 302 equals one-third of thevertical distance between transitions 308, and then moving half thatwidth (i.e., one-sixth of the vertical distance between transitions 308)down to reach the center row of white blocks 302. The image processingfunctionality then scans to the left on the row of pixels justidentified until a point on black border 204 is noted. The imageprocessing functionality then repeats this process for the white blocks302 adjacent to the lowest transition 308. Once this second point onblack border 204 is noted, the vertical line joining these two pointswill be the left edge of modules 300.

The vertical distance between transitions 308 defines the scale formessage carrier 200. In one implementation, horizontal distances can becalculated using the vertical dimensions times a scale factor for theaspect ratio of the camera. For example, if the horizontal pixel and thevertical pixel pitches are identical, a ratio of 1:1 exists. Then thevertical distance between transitions 308, divided by three, is thefeature size assuming square blocks and that between transitions 308 arethree features, a white block 302, a black block 304, and a data block306 sandwiched between the two.

As an optional step, the image processing functionality, in oneimplementation, can validate the black and white blocks by testing pixelvalues at a series of points. Specifically, the image processingfunctionality goes to the middle of white blocks 302 or black blocks 304and verifies that they are the color that they are expected to be.

The left edge of modules 300 is determined as explained above, and thecenter rows of data blocks 306 are located vertically halfway betweentransitions 308. Accordingly, the image processing functionality has theinformation it needs to read the data bits forming the message code outof message carrier 200. Using vertical scan lines, the image processingfunctionality reads data blocks 306. The vertical scan lines passthrough the horizontal centers of data blocks 306. These horizontalcenters can be determined using the width of the data blocks 306 and thelocation of the left edge of modules 300. The width of data blocks 306can be calculated based on the height of data blocks 306 (given from thevertical distance between transitions 308) and the scale of width toheight of the blocks. For instance, since the height of each block 306is one third the distance between transitions 308, and assuming a 1:1aspect ratio of width to height (or correcting for any deviation fromthat), the distance from the left edge of module 300 to the horizontalcenter of data block 306 can be calculated. The horizontal center of thenext data block 306 will be three times that distance from the same leftedge of module 300.

The data value for each bit (D0 . . . Dn) can be determined by a rangeof intensity values, such as 0 to 20 IRE units (International RadioEngineers) for a “0” bit and 80 to 100 IRE units for a “1” bit. Ofcourse, other ranges and thresholds can be used such as a single IREunit threshold above which expresses a given bit value (0 or 1), whilebelow expresses the opposite bit value. Bit D0 thru the highest bit isassembled, in one implementation, starting at the top left dataposition, moving to the right to finish the row and, then resetting theread position to the left and starting again at the next row down. Inone implementation, the individual bits form at least one byte forstorage and conversion to any convenient form. In one implementation,the decoding functionality attaches any framing bits and/or bytesdesired and stores the data to memory for ultimate transmission.

In one implementation, a mask of a predetermined design or configurationis merged with the checkerboard message carrier 200 to obscure theotherwise stark checkerboard design. The outline mask, in oneimplementation, is substantially the same size as the checkerboarddesign. The mask can include a logo or any other suitable design and, ina one implementation, is translucent in overall appearance to allow forprocessing of the captured image to strip out the mask and acquire themessage code. In one implementation, the translucence is achieved bycreating a mask design where the illuminated pixels defining the maskare spaced from one another to obscure the checkerboard, but still allowfor detection of bits after processing the captured image.Implementations of the invention involving a mask require an additionalprocessing step. Specifically, after locating the merged mask andcheckerboard message carrier 200, a processor operates to strip the maskfrom message carrier 200 before resolving the bits forming the messagecode. With knowledge of the mask design, a processor can strip the maskfrom message carrier 200 using standard image processing techniques.

Lastly, the invention has been described with reference to specificimplementations. Other implementations of the invention will be apparentto those of ordinary skill in the art. It is, therefore, intended thatthe scope of the invention not be limited to the implementationsdescribed above.

1. A method for receiving promotional messages comprising: capturing animage of a message carrier on a display screen; processing the image toacquire a message code from the message carrier; transmitting themessage code to a remote system; and receiving a promotional messagebased on the transmitted message code.
 2. The method of claim 1, whereinprocessing the image comprises: reading intensity values for pixelsforming the image; locating the message carrier by analyzing theintensity values; locating the message code within the message carrier;and reading intensity values for pixels forming the message code toacquire the message code.
 3. The method of claim 1, wherein processingthe image comprises: transmitting the image to a second remote system;reading intensity values for pixels forming the image at the secondremote system; locating the message carrier by analyzing the intensityvalues at the second remote system; locating the message code within themessage carrier at the second remote system; reading intensity valuesfor pixels forming the message code to acquire the message code at thesecond remote system; and receiving the message code from the secondremote system.
 4. The method of claim 2, wherein the intensity valuesare read by scanning substantially vertical columns of pixels formingthe image.
 5. The method of claim 4, wherein locating the messagecarrier comprises analyzing the scanned vertical columns of pixels toidentify one or more transitions between dark-colored regions andlight-colored regions.
 6. The method of claim 4, wherein locating themessage carrier comprises analyzing the scanned vertical columns ofpixels to identify a dark-colored border.
 7. The method of claim 1,wherein the remote system comprises a remote server having a databasecontaining promotional messages.
 8. The method of claim 1, wherein thepromotional message comprises an electronic coupon that can be used at apoint-of-sale terminal.
 9. The method of claim 1, wherein the messagecode is transmitted to the remote system over a wireless network. 10.The method of claim 9, wherein the wireless network comprises a GSMnetwork, a CDMA network, or a TDMA network.
 11. The method of claim 1,wherein the promotional message is received over a wireless network. 12.The method of claim 11, wherein the wireless network comprises a GSMnetwork, a CDMA network, or a TDMA network.
 13. The method of claim 1,wherein the message carrier comprises: an identifying border; and themessage code.
 14. The method of claim 13, further comprising one or moretransitions between dark-colored regions and light-colored regions. 15.The method of claim 13, wherein the message code is formed using aplurality of blocks.
 16. The method of claim 13, wherein the messagecode comprises text codes, graphical symbols, or an alphanumeric string.17. The method of claim 15, wherein the message code is formed using acheckerboard-like design.
 18. The method of claim 15, wherein themessage code is formed using a vertical strip design.
 19. The method ofclaim 13, wherein the identifying border is over-sized to increase theprobability that a column of pixels will pass through the entire border.20. A method for pushing promotional messages to users comprising:displaying a message carrier on a display screen; receiving a messagecode from a user, wherein the message code was acquired from the messagecarrier; and pushing a promotional message to the user based on thereceived message code.
 21. The method of claim 20, wherein the messagecarrier comprises: an identifying border; and the message code.
 22. Themethod of claim 21, wherein the message carrier further comprises one ormore transitions between dark-colored regions and light-colored regions.23. The method of claim 21, wherein the message code is formed using aplurality of blocks.
 24. The method of claim 21, wherein the messagecode is formed using a plurality of text codes.
 25. The method of claim21, wherein the message code is formed using a plurality of graphicalsymbols.
 26. The method of claim 20, wherein the message code isreceived over a wireless network.
 27. The method of claim 26, whereinthe wireless network comprises a GSM network, a CDMA network, or a TDMAnetwork.
 28. The method of claim 20, wherein the promotional message ispushed over a wireless network.
 29. The method of claim 28, wherein thewireless network comprises a GSM network, a CDMA network, or a TDMAnetwork.
 30. An apparatus for receiving promotional messages comprising:a display; a digital image capturing device; a wireless communicationsystem; a processor; a memory; and a client application, physicallystored in the memory, for receiving promotional messages, comprisinginstructions operable to cause the processor and the wirelesscommunication system to: capture an image of a message carrier using thedigital image capturing device; process the image to acquire a messagecode from the message carrier; transmit the message code to a remotesystem using the wireless communication system; and receive apromotional message using the wireless communication system based on thetransmitted message code.
 31. The apparatus of claim 30, wherein theinstructions to process the image further comprise instructions operableto cause the processor to: read intensity values for pixels forming theimage; locate the message carrier by analyzing the intensity values;locate the message code within the message carrier; and read intensityvalues for pixels forming the message code to acquire the message code.32. The apparatus of claim 31, wherein the intensity values are read byscanning substantially vertical columns of pixels forming the image. 33.The apparatus of claim 32, wherein the instructions to locate themessage carrier comprise instructions operable to cause the processorand the wireless communication system to analyze the scanned verticalcolumns of pixels to identify one or more transitions betweendark-colored regions and light-colored regions.
 34. The apparatus ofclaim 32, wherein the instructions to locate the message carriercomprise instructions operable to cause the processor and the wirelesscommunication system to analyze the scanned vertical columns of pixelsto identify a dark-colored border.
 35. The apparatus of claim 30,wherein the remote system comprises a remote server having a databasecontaining promotional messages.
 36. The apparatus of claim 30, whereinthe message code is transmitted to the remote system over a wirelessnetwork.
 37. The apparatus of claim 36, wherein the wireless networkcomprises a GSM network, a CDMA network, or a TDMA network.
 38. Theapparatus of claim 30, wherein the promotional message is received overa wireless network.
 39. The apparatus of claim 38, wherein the wirelessnetwork comprises a GSM network, a CDMA network, or a TDMA network. 40.The apparatus of claim 30, wherein the message carrier comprises: anidentifying border; and the message code.
 41. The apparatus of claim 40,wherein the message code is formed using a plurality of blocks.
 42. Theapparatus of claim 40, wherein the message code comprises text codes,graphical symbols, or an alphanumeric string.
 43. The apparatus of claim41, wherein the message code is formed using a checkerboard-like design.44. The apparatus of claim 41, wherein the message code is formed usinga vertical strip design.
 45. The apparatus of claim 40, wherein theidentifying border is over-sized to increase the probability that acolumn of pixels will pass through the entire border.
 46. The apparatusof claim 40, wherein the identifying border comprises a dark coloredborder around at least a portion of the message code.
 47. The apparatusof claim 40, wherein the identifying border comprises one or moretransitions between dark-colored regions and light-colored regions. 48.An apparatus for receiving promotional messages comprising: a display; adigital image capturing device; a wireless communication system; aprocessor; a memory; and a client application, physically stored in thememory, for receiving promotional messages, comprising instructionsoperable to cause the processor and the wireless communication systemto: capture an image of a message carrier using the digital imagecapturing device; transmit the image to an image processing system usingthe wireless communication system; receive a message code from the imageprocessing system based on the transmitted image; transmit the messagecode to a promotional message system using the wireless communicationsystem; and receive a promotional message from the promotional messagesystem based on the transmitted message code.
 49. The apparatus of claim48, wherein the image processing system is configured to: receive theimage; read intensity values for pixels forming the image; locate themessage carrier by analyzing the intensity values; locate the messagecode within the message carrier; read intensity values for pixelsforming the message code to acquire the message code; and transmit themessage code.
 50. An apparatus for receiving promotional messagescomprising: a display; a digital image capturing device; a wirelesscommunication system; a processor; a memory; and a client application,physically stored in the memory, for receiving promotional messages,comprising instructions operable to cause the processor and the wirelesscommunication system to: capture an image of a message carrier using thedigital image capturing device; transmit the image to a remote systemusing the wireless communication system; and receive a promotionalmessage from the remote system based on the transmitted image.
 51. Theapparatus of claim 50, wherein the remote system is configured to:receive the image; read intensity values for pixels forming the image;locate the message carrier by analyzing the intensity values; locate themessage code within the message carrier; read intensity values forpixels forming the message code to acquire the message code; andtransmit a promotional message based on the message code.
 52. A computerprogram product, physically stored on a machine-readable medium, forreceiving promotional messages, comprising instructions operable tocause a programmable processor to: capture an image of a message carrierusing the digital image capturing device; process the image to acquire amessage code from the message carrier; transmit the message code to aremote system using the wireless communication system; and receive apromotional message using the wireless communication system based on thetransmitted message code.
 53. The computer program product of claim 52,wherein the instructions to process the image further compriseinstructions operable to cause a programmable processor to: readintensity values for pixels forming the image; locate the messagecarrier by analyzing the intensity values; locate the message codewithin the message carrier; and read intensity values for pixels formingthe message code to acquire the message code.
 54. A data processingsystem comprising: means for capturing an image of a message carrier ona display screen; means for processing the image to acquire a messagecode from the message carrier; means for transmitting the message codeto a remote system; and means for receiving a promotional message basedon the transmitted message code.
 55. The data processing system of claim54, wherein the means for processing the image further comprise: meansfor reading intensity values for pixels forming the image; means forlocating the message carrier by analyzing the intensity values; meansfor locating the message code within the message carrier; and means forreading intensity values for pixels forming the message code to acquirethe message code.